﻿//Ana Ibáñez
//0.1 Constructor métodos: GetVelocidadX, GetVelocidadY,MoverAtrás,MoverIzquierda,Moveralante,MoverDerecha, Dibujar, Getx, GetY, SetY,Pararse
using System;


namespace Monkey
{
    class Sprite : ElementoGrafico
    {

        protected int velocidadX, velocidadY;

        private Animacion derecha;
        private Animacion izquierda;
        private Animacion paradoEspaldas;
        private Animacion espaldas;
        private Animacion frente;
        private Animacion paradoFrente;
        private Animacion paradoDerecha;
        private Animacion paradoIzquierda;
        private bool seMueveDeEspaldas;
        private bool seMueveDeFrente;
        private bool seMueveALaDerecha;
        private bool seMueveALaIzquierda;
        //private int count;
        private bool estaParado;
        

        private Animacion animacionActual;

        public Sprite(int xIni, int yIni, int nuevaVelocidadX, int nuevaVelocidadY, string nombre)
        {

            seMueveDeEspaldas = false;
            velocidadX = nuevaVelocidadX;
            velocidadY = nuevaVelocidadY;
            x = xIni;
            y = yIni;
            derecha = new Animacion(nombre, "derecha", 12);
            izquierda = new Animacion(nombre, "izquierda", 12);
            paradoEspaldas = new Animacion(nombre, "paradoEspaldas", 1);
            espaldas = new Animacion(nombre, "espaldas", 12);
            frente = new Animacion(nombre, "frente", 12);
            paradoFrente = new Animacion(nombre, "paradoFrente", 1);
            paradoDerecha = new Animacion(nombre, "paradoDerecha", 1);
            paradoIzquierda = new Animacion(nombre, "paradoIzquierda", 1);
            animacionActual = paradoFrente;
            //count = 0;
            estaParado = true;
        }


        public int GetVelocidadX()
        {
            return velocidadX;
        }


        public int GetvelocidadY()
        {
            return velocidadY;
        }
        public void SetVelocidadX(int nuevaVelocidadX)
        {
            velocidadX = nuevaVelocidadX;
        }
        public void SetVelocidadY(int nuevaVelocidadY)
        {
            velocidadY = nuevaVelocidadY;
        }

        public void Dibujar()
        {
            animacionActual.Dibujar(x, y);
        }

        public bool GetEstaParado()
        {
            return estaParado;
        }
        public void MoverDerecha()
        {
            seMueveDeEspaldas = false;
            seMueveDeFrente = false;
            seMueveALaIzquierda = false;
            seMueveALaDerecha = true;
            estaParado = false;

            x += velocidadX;
            animacionActual = derecha;
        }

        public void Mover(int nuevaX, int nuevaY, bool sePuedeMoverDcha, bool sePuedeMoverIzq, bool sePuedeMoverAtras, bool sePuedeMoverAlnte)
                                                    
        {

            if (nuevaX > x && sePuedeMoverDcha)
            {

                MoverDerecha();
                if (nuevaX - x <= velocidadX)
                {
                    velocidadX = 1;

                }
            }
            else if (nuevaX < x && sePuedeMoverIzq)
            {

                if (x - nuevaX <= velocidadX)
                {

                    velocidadX = 1;
                }
                MoverIzquierda();

            }

            else if (nuevaY < y + alto / 2 && sePuedeMoverAtras)
            {

                if (y - nuevaY <= velocidadY)
                {

                    velocidadY = 1;
                }
                MoverAtrás();

            }
            else if (nuevaY > y + alto && sePuedeMoverAlnte)
            {

                if (nuevaY - y <= velocidadY)
                {

                    velocidadY = 1;
                }

                MoverAlante();

            }

            else
            {

                Pararse();
            }

        }
        public void MoverAtrás()
        {
            estaParado = false;
            seMueveDeFrente = false;
            seMueveALaIzquierda = false;
            seMueveALaDerecha = false;
            seMueveDeEspaldas = true;

            y -= velocidadY;
            animacionActual = espaldas;
        }

        public void MoverAlante()
        {
            estaParado = false;
            seMueveDeEspaldas = false;
            seMueveALaIzquierda = false;
            seMueveALaDerecha = false;
            seMueveDeFrente = true;
            
            y += velocidadY;
            animacionActual = frente;
        }

        public void MoverIzquierda()
        {
            estaParado = false;
            seMueveDeEspaldas = false;
            seMueveDeFrente = false;
            seMueveALaDerecha = false;
            seMueveALaIzquierda = true;

            x -= velocidadX;
            animacionActual = izquierda;
        }

        public void Pararse()
        {
            estaParado = true;
            if (seMueveDeEspaldas)
            {
                animacionActual = paradoEspaldas;
            }
            else if (seMueveALaDerecha)
            {

                animacionActual = paradoDerecha;
            }
            else if (seMueveALaIzquierda)
            {

                animacionActual = paradoIzquierda;
            }
            else if (seMueveDeFrente)
            {

                animacionActual = paradoFrente;
            }
        }
    }

}

